import Vue from 'vue'
import App from './App'

// import router from "./router";
import store from './store'
import dialog from './utils/dialog'
import cookie from '@/utils/store/cookie'
import apis from '@/apis/apis.js'
import tui from '@/utils/tui.js'

import {
	parseRoute,
	_router,
	parseQuery
} from '@/utils'
import {
	VUE_APP_API_URL
} from '@/config'
import uView from '@/uni_modules/uview-ui'
Vue.use(uView)
Vue.config.productionTip = false
Vue.config.devtools = process.env.NODE_ENV !== 'production'
Vue.prototype.tui = tui
Vue.config.productionTip = false
App.mpType = 'app'
Vue.prototype.$store = store
// apis
Vue.prototype.$apis = apis

const app = new Vue({
	...App,
	store
})

Object.defineProperty(Vue.prototype, '$yrouter', {
	get() {
		return _router
	},
})

Object.defineProperty(Vue.prototype, '$yroute', {
	get() {
		return this._route
	},
})

Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL

let deviceType = ''

// #ifdef MP-WEIXIN
// 微信小程序编译的代码
deviceType = 'routine'
// #endif

// !!! ps  不建议在 template 中使用 $deviceType 去判断当前环境，很有可能出现 $deviceType 为 undefined 导致判断出错的问题，可以在 script 模块中正常使用
// 建议通过 store 去获取 $deviceType 可以保证 template 中取到的值有效
// import { mapState, mapMutations, mapActions } from 'vuex';
// computed: {
// 		...mapState(['$deviceType'])
// },

// #ifdef H5
// H5编译的代码


if (!cookie.has(cookie.CACHE_KEY)) {
	cookie.clearAll()
	cookie.set(cookie.CACHE_KEY, 1)
}

// #endif


Vue.prototype.$deviceType = deviceType

Vue.mixin({
	onLoad() {
		const {
			$mp
		} = this.$root
		this._route = parseRoute($mp)
	},
	onShow() {
		_router.app = this
		_router.currentRoute = this._route
	},
	// 这里为了解决 .vue文件中 template 无法获取 VUE.prototype 绑定的变量
	computed: {
		// $VUE_APP_RESOURCES_URL() {
		//   return VUE_APP_RESOURCES_URL
		// },
	},
})

store.commit('updateDevicetype', deviceType)

app.$mount()
// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
export function createApp() {
	const app = createSSRApp(App)
	app.use(store)
	app.config.globalProperties.tui = tui;
	return {
		app
	}
}
// #endif